草庐IT

javascript oop、instanceof 和基类

全部标签

c++ - 为什么我不能从基类的实例访问 protected 成员?

这个问题在这里已经有了答案:accessingaprotectedmemberofabaseclassinanothersubclass(8个答案)关闭7年前。假设我有这段代码:classfoo{protected:inta;};classbar:publicfoo{public:voidcopy_a_from_foo(foo&o){a=o.a;//Error}voidcopy_a_from_bar(bar&o){a=o.a;//OK}};intmain(){barx;fooy;barz;x.copy_a_from_foo(y);x.copy_a_from_bar(z);}这里clas

c++ - 在抽象基类上使用 __declspec(novtable) 是否会以任何方式影响 RTTI?

或者,使用__declspec(novtable)是否有任何其他已知的负面影响?我似乎找不到任何问题的引用。 最佳答案 MSCV使用每个对象一个vptr,每个类一个vtbl来实现OO机制,例如RTTI和虚函数。因此,当且仅当vptr已正确设置时,RTTI和虚函数才能正常工作。struct__declspec(novtable)B{virtualvoidf()=0;};structD1:B{D1(){}//aftertheconstructionofD1,vptrwillbesettovtblofD1.};D1d1;//afterdh

c++ - 基类引用 - 为其分配其他类型

下面的例子会发生什么?structB{};structD1:B{};structD2:B{};intmain(){D1d;D2d2;B&x=d;x=d2;}我知道引用没有被重新分配。x仍然引用d,但是如何将d2分配给d?还有一些:structB{B(){x=0;}intx;virtualvoidfoo(){cout似乎x.x已更新,但vftable没有...为什么? 最佳答案 x指的是d的B基类子对象。赋值x=d2slicesd2中的B基子对象,并将其值分配给d的子对象。这通常不是故意的。编辑:Itseemslikex.xwasup

c++ - 访问指定为私有(private)的基类的公共(public)静态成员

我正在学习C++。文档learn.microsoft.com/en-us/cpp/cpp/member-access-control-cpp说:Whenyouspecifyabaseclassasprivate,itaffectsonlynonstaticmembers.Publicstaticmembersarestillaccessibleinthederivedclasses.但是,以下代码根据前面引用导致错误C2247的示例稍作调整:'Base::y'notaccessiblebecause'Derived1'uses'private'toinheritfrom'Base'.对

c++ - 派生类和基类之间指针到指针的转换?

关于以下C++程序:classBase{};classChild:publicBase{};intmain(){//Normal:usingchildasbaseisallowedChild*c=newChild();Base*b=c;//Doublepointers:apparentlycan'tuseChild**asBase**Child**cc=&c;Base**bb=cc;return0;}GCC在最后一个赋值语句中产生以下错误:error:invalidconversionfrom‘Child**’to‘Base**’我的问题分为两部分:为什么没有从Child**到Base

C++通过抽象基类在未知派生类上调用复制构造函数

我正在制作一棵具有多种不同节点类型的树:二元节点、一元节点和终端节点。我有一个所有节点都继承自的ABC。我正在尝试为树编写递归复制构造函数,如下所示:classgpnode{public:gpnode(){};virtual~gpnode(){};gpnode(constgpnode&src){};gpnode*parent;}classbnode:gpnode{public:bnode(){//stuff};~bnode(){//recursivedelete};bnode(constbnode&src){lnode=gpnode(src.lnode);rnode=gpnode(sr

c++ - 尽管有友元,但无法访问基类

关于这个错误有很多问题,所有的答案似乎都暗示向下转型是不可能的。只有thisanswer提到友元作为可能的解决方案,至少据我所知。但是,以下代码(为清楚起见删除了不相关的内容)无法编译:classC;classA{friendclassC;//thisdoesnothelp};classB:protectedA{friendclassC;//thisdoesnothelpeither};classC{public:voidfoo(A*a){};};Bb;Cc;voidbar(){c.foo(&b);//thisproduceserror:classAisaninaccessibleba

android - 如果作为 RxJava Observable 提供,Kotlin 密封类子类需要强制转换为基类

我试图在我用Kotlin编写的应用程序中避免RxJava链的终端状态,所以我发现转换Observable是正确的事情至Observable>在哪里Result是密封类。sealedclassResultdataclassSuccess(valdata:T):Result()dataclassFailure(valthrowable:Throwable):Result()假设我可以观察到这个网络请求。fungetOrganization():Observable>{returnapi.getOrganization("google").map{Success(true)}.onError

android - 如果作为 RxJava Observable 提供,Kotlin 密封类子类需要强制转换为基类

我试图在我用Kotlin编写的应用程序中避免RxJava链的终端状态,所以我发现转换Observable是正确的事情至Observable>在哪里Result是密封类。sealedclassResultdataclassSuccess(valdata:T):Result()dataclassFailure(valthrowable:Throwable):Result()假设我可以观察到这个网络请求。fungetOrganization():Observable>{returnapi.getOrganization("google").map{Success(true)}.onError

ios - 未指定基类而定义的类。找不到 UIViewController 的接口(interface)声明

我创建了一个新项目并添加了一个名为MyViewController的新类。当MyViewController是NSObject的子类时,我的代码可以正常编译,但是当我将其更改为继承自UIViewController时,我收到以下两条错误消息:Class"MyViewController"definedwithoutspecifyingabaseclass和Cannotfindinterfacedeclarationfor"UIViewController",superclassof"MyViewController".我的头文件有什么问题?MyViewController.h#impo